var win = null;

function ajaxInit(){
	var xmlHttp;
	try{
		// Firefox, Opera 8.0+, Safari
		xmlHttp=new XMLHttpRequest();
    }
	catch (e){
		// Internet Explorer
		try{
			xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e){
			try{
				xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (e){
				alert("Your browser does not support AJAX!");
				return false;
			}
		}
    }	
	return xmlHttp;
}

function trim(str){
	return str.replace(/^\s+|\s+$/g,"");
}

function verCheckList(checkList){
	var ret=false;
	if (checkList.length>0){
		for (i = 0; i < checkList.length; i++){
			if (checkList[i].checked == true){
				ret=true;
			}			
		}		
	} else {
		if (checkList.checked==true){
			ret=true;
		}
	} 
	if (ret==false){
		alert ('Selecione um registro.');
	}
	return ret;
}


function limpaDestino(){
	obj = document.getElementById(destino);
	while(obj.fisrtChild){
		obj.removeChild(obj.firstChild);
	}
}

function alertModal(titulo,msg)
{
  	Dialog.alert(msg, {windowParameters: {className: "alphacube",
      				 					  title: titulo , 
      				 					  width:500, 
      				 					  height:325}, okLabel: "Fechar" });
}

function alertModalResize(titulo, mensagem, largura, altura) {
	Dialog.alert({url: mensagem, option:{method:'get'}},
	             {className:"alphacube",
	              title:titulo,
	              width:largura,
	              height:altura,
	              okLabel:"Fechar"});
}

function openAjaxWindowModal(titulo, link, idjanela, largura, altura, funcaoRetorno) {

	 win = null;
	 win = new Window(idjanela , { 
      				 		url: link,
      				 		className: "alphacube", 
      				 		title: titulo ,
      				 		top:10, 
      				 		left:70,  
      				 		width:largura, 
      				 		height:altura, 
      				 		zIndex:150, 
      				 		opacity:1, 
      				 		resizable: true
      				 		}
      				    )
      				    
 	if(funcaoRetorno != undefined) win.setCloseCallback(funcaoRetorno);
	win.setDestroyOnClose();
	win.showCenter(false);
	win.show(true);	

}

var sbe_window_loaded = false;

function marcarJanelaCarregada() {
	sbe_window_loaded = true;
}

function isJanelaCarregada() {
	return sbe_window_loaded;
}

function abrirPopUp2(url){
    var janela = window.open(url, 'repdet2', 'top=95,left=145,width=795,height=478,maximized=no,toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,scrolling=no,resizable=yes');
    janela.focus();
    if (janela.document != null && janela.document.getElementById('carregando') != null) {
    	janela.document.getElementById('carregando').style.display = ''
    }
}

function abrirPopUp(url){
	var randomnumber=Math.floor(Math.random()*11);
    var janela = window.open(url, 'repdet'+randomnumber , 'top=95,left=145,width=795,height=478,maximized=no,toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,scrolling=no,resizable=yes');
    janela.focus();
    if (janela.document != null && janela.document.getElementById('carregando') != null) {
    	janela.document.getElementById('carregando').style.display = ''
    }
}

function trocaimagem(id, src){
    if (id != null) {
        $(id).src = src;
    }
}

function trocacor(id, cor){
    $(id).style.color = cor;
}

// retornar apenas numeros
function v_NR(tecla)
{
	if(typeof(tecla) == 'undefined')
		var tecla = window.event;

	var codigo = (tecla.which ? tecla.which : tecla.keyCode ? tecla.keyCode : tecla.charCode);

	// permite números, 8=backspace, 46=del, 9=tab , 45=-
	if ( (codigo == 45 ) || (codigo >= 48 && codigo <= 57) || (codigo >= 96 && codigo <= 105) || codigo == 8 || codigo == 46 || codigo == 9 )
	{ return true; }
	
	return false;
}

function setupInputDinheiro(input) {
	if (isJanelaCarregada()) {
		_setupInputDinheiro_unit(input)
	} else {
		Event.observe(window, 'load', function() {_setupInputDinheiro_unit(input) }, false);
	}
}

function _setupInputDinheiro_unit(input) {

	input.onkeypress = function (e) {
		if (typeof(e) == 'undefined') {
			e = window.event;
		}
		var codigo = (e.which ? e.which : e.keyCode ? e.keyCode : e.charCode);
		if ((codigo < 48 || codigo > 57) && !(codigo >= 35 && codigo <= 40) && (codigo != 8 && codigo != 46 && codigo != 44 && codigo != 9 ) && (codigo != 45)) {
			return false;
		}
		return true;
	}
	
	input.onfocus = function(e) {
		if (this.value == '') {
			this.value = '0,00'
		}
	}
		
	input.onchange = function(e) {
		var valor = this.value;
		
		if (valor != '') {
			valor = valor.toString().replace(/\./g,',')
		
			if (valor.match(',') == null && !isNaN(valor)) {
				valor = valor + ',00'
			} else if (valor.match(/,.$/)) {
				valor = valor + '0'
			} else if (!valor.match(/,/)) {
				this.value = '0,00'
				return;
			}
			
			while (valor != '' && !valor.match(/,..$/)) {
				valor = valor.slice(0,valor.length-1)
			}
			
			//agora que tem o valor certo, tira todas as virgulas e poe de novo em duas casas decimais depois. 
			//Isso trata quando tem várias vírgulas
			valor = valor.replace(/,/g,'');
			
			valor = valor.substring(0,valor.length-2) + ',' + valor.substring(valor.length-2,valor.length)
			
			this.value = valor
		} else {
			this.value = '0,00'
		}
	}
	input.onchange()
}


function setupInputInteiro(input) {
	if (isJanelaCarregada()) {
		_setupInputInteiro_unit(input)
	} else {
		Event.observe(window, 'load', function() {_setupInputInteiro_unit(input) }, false);
	}
}

function _setupInputInteiro_unit(input, aceitaNegativo) {

	input.onkeypress = function (e) {
		if (typeof(e) == 'undefined') {
			e = window.event;
		}
		var codigo = (e.which ? e.which : e.keyCode ? e.keyCode : e.charCode);
		if ((codigo < 48 || codigo > 57) && !(codigo >= 35 && codigo <= 40) && (codigo != 8 && codigo != 9)) {
			return false
		} 
		return true;
	}
	
	input.onfocus = function(e) {
		if (this.value == '') {
			this.value = '0'
		}
	}
		
	input.onchange = function(e) {
		var valor = this.value;
		
		if (valor != '') {
			valor = valor.toString().replace(/\./g,'')
			valor = valor.toString().replace(/\,/g,'')		
			this.value = valor
		} else {
			this.value = '0'
		}
	}	
	input.onchange()
}

function setupInputInteiroNegativo(input) {
	if (isJanelaCarregada()) {
		_setupInputInteiroNegativo_unit(input)
	} else {
		Event.observe(window, 'load', function() {_setupInputInteiroNegativo_unit(input) }, false);
	}
}

function _setupInputInteiroNegativo_unit(input) {

	input.onkeypress = function (e) {
		if (typeof(e) == 'undefined') {
			e = window.event;
		}
		var codigo = (e.which ? e.which : e.keyCode ? e.keyCode : e.charCode);
		if ((codigo < 48 || codigo > 57) && !(codigo >= 35 && codigo <= 40) && (codigo != 8 && codigo != 9 && codigo != 45)) {
			return false
		} 
		return true;
	}
	
	input.onfocus = function(e) {
		if (this.value == '') {
			this.value = '0'
		}
	}
		
	input.onchange = function(e) {
		var valor = this.value;
		
		if (valor != '') {
			valor = valor.toString().replace(/\./g,'')
			valor = valor.toString().replace(/\,/g,'')		
			this.value = valor
		} else {
			this.value = '0'
		}
	}	
	input.onchange()
}



/* Working with the cursor position
   http://parentnode.org/javascript/working-with-the-cursor-position/ 
   http://javascript.nwbox.com/cursor_position/
   */
function setCaretTo(obj, pos) { 
    if(obj.createTextRange) { 
        /* Create a TextRange, set the internal pointer to
           a specified position and show the cursor at this
           position
        */ 
        var range = obj.createTextRange(); 
        range.move("character", pos); 
        range.select(); 
    } else if(obj.selectionStart) { 
        /* Gecko is a little bit shorter on that. Simply
           focus the element and set the selection to a
           specified position
        */ 
        obj.focus(); 
        obj.setSelectionRange(pos, pos); 
    } 
} 

function getSelectionStart(obj) {
	if (obj.createTextRange) {
		var r = document.selection.createRange().duplicate()
		r.moveEnd('character', obj.value.length)
		if (r.text == '') return obj.value.length
		return obj.value.lastIndexOf(r.text)
	} else return obj.selectionStart
}

function getSelectionEnd(obj) {
	if (obj.createTextRange) {
		var r = document.selection.createRange().duplicate()
		r.moveStart('character', -obj.value.length)
		return r.text.length
	} else return obj.selectionEnd
}

/********************************************** FUN��ES DATA **********************************************/
function Compara_Datas(dt_inicial, dt_final){  
    //Verifica se a data inicial � maior que a data final  
    var data_inicial = dt_inicial;  
    var data_final   = dt_final;  
    dia_inicial      = data_inicial.substr(0,2);  
    dia_final        = data_final.substr(0,2);  
    mes_inicial      = data_inicial.substr(3,2);  
    mes_final        = data_final.substr(3,2);  
    ano_inicial      = data_inicial.substr(6,4);  
    ano_final        = data_final.substr(6,4);  
    if(ano_inicial > ano_final){  
        alert("A data inicial deve ser menor que a data final.");   
        return false  
    }else{  
	    if(ano_inicial == ano_final){  
	    	if(mes_inicial > mes_final){  
	    		alert("A data inicial deve ser menor que a data final.");  
	            return false  
	        }else{  
	        	if(mes_inicial == mes_final){  
		            if(dia_inicial > dia_final){  
		                alert("A data inicial deve ser menor que a data final.");  
		                return false  
		            }  
	            }  
	        }  
	    }  
	}  
} 

// Formata data no padr?o DDMMAAAA
function formataData(campo){
	campo.value = filtraCampo(campo);
	vr = campo.value;
	tam = vr.length;

	if ( tam > 2 && tam < 5 )
		campo.value = vr.substr( 0, tam - 2  ) + '/' + vr.substr( tam - 2, tam );
	if ( tam >= 5 && tam <= 10 )
		campo.value = vr.substr( 0, 2 ) + '/' + vr.substr( 2, 2 ) + '/' + vr.substr( 4, 4 ); 

}

function bloqueiaDataMaiorAtual(strData){
	var numeros = strData.replace(/\D/g,"");
	var dia1=parseInt(numeros.substr( 0, 2 ));
	var mes1=parseInt(numeros.substr( 2, 2 ));
	var ano1=parseInt(numeros.substr( 4, 4 ));

	var datadigitada= new Date(ano1,(mes1-1),dia1);
	var miliqq=datadigitada.getTime();

	var mydate= new Date();
	mydate.setHours(0,0,0,0);
	var mili=mydate.getTime();

	var diaqq=parseInt(datadigitada.getDate());
	var mesqq=parseInt(datadigitada.getMonth())+1;

	if((dia1!=diaqq) || (mes1!=mesqq)){
		alert("Data inválida");
		return true;
	}
	else if(miliqq > mili){
		alert("A data não pode ser maior que data atual");
		return true;
	}
	return false;
}

function bloqueiaDataMenorAtual(strData){
	var numeros = strData.replace(/\D/g,"");
	var dia1=parseInt(numeros.substr( 0, 2 ),10);
	var mes1=parseInt(numeros.substr( 2, 2 ),10);
	var ano1=parseInt(numeros.substr( 4, 4 ),10);

	var datadigitada= new Date(ano1,(mes1-1),dia1);
	var miliqq=datadigitada.getTime();

	var mydate= new Date();
	mydate.setHours(0,0,0,0);
	var mili=mydate.getTime();

	var diaqq=parseInt(datadigitada.getDate());
	var mesqq=parseInt(datadigitada.getMonth())+1;

	if((dia1!=diaqq) || (mes1!=mesqq)){
		alert("Data inválida");
		return true;
	}
	else if(miliqq < mili){
		alert("A data não pode ser menor que data atual");
		return true;
	}
	return false;
}

function setupInputData(input) {
	if (isJanelaCarregada()) {
		_setupInputData_unit(input)
	} else {
		Event.observe(window, 'load', function() {_setupInputData_unit(input) }, false);
	}
}

function _setupInputData_unit(input) {

	input.onkeypress = function (e) {
		if (typeof(e) == 'undefined') {
			e = window.event;
		}
		var codigo = (e.which ? e.which : e.keyCode ? e.keyCode : e.charCode);
		if ((codigo < 47 || codigo > 57) && !(codigo >= 35 && codigo <= 40) && (codigo != 8 && codigo != 46 && codigo != 32 && codigo != 58 && codigo != 9)) {
			return false;
		}
		return true;
	}
		
	input.onchange = function(e) {
		if (this.value != '' && this.value.match(/..\/..\/..../) == null) {
		
			if (this.value.length == 8 && !isNaN(parseInt(this.value))) {
				this.value = this.value.substr( 0, 2 ) + '/' + this.value.substr( 2, 2 ) + '/' + this.value.substr( 4, 4 );	
			} else {
				var msg = "Data incorreta! Utilize o formato de data 'dd/mm/yyyy'. \n"
				msg += "Por exemplo: '21/10/1994'."
				alert(msg);
			}
		}
	}
}

/********************************************** FUN��ES DATA **********************************************/
// limpa todos os caracteres especiais do campo solicitado
function filtraCampo(campo){
	var s = "";
	var cp = "";
	vr = campo.value;
	tam = vr.length;
	for (i = 0; i < tam ; i++) {  
		if (vr.substring(i,i + 1) != "/" && vr.substring(i,i + 1) != "-" && vr.substring(i,i + 1) != "."  && vr.substring(i,i + 1) != "," ){
		 	s = s + vr.substring(i,i + 1);}
	}
	campo.value = s;
	return cp = campo.value
}

// input type="text" name="cep" id="cep" onkeypress="return formata_keypress(this, '999.999.999-99', (event ? event : Event))"> // formata o campo para cep
// O caracter '9' define que só será permitido números
// O caracter '?' define que é permitido qualquer caracter
function formata_keypress(campo, mask, evt) 
{
	var evt = evt ? evt : window.event;
    var key = (evt.keyCode ? evt.keyCode : (evt.which ? evt.which : evt.charCode));
	
	if (key == 8 || key == 13 || key == 37 || key == 38 || key == 39 || key == 40 || key == 9) 
	{
		return true;
	}

 	string = campo.value;  
 	i = string.length;

 	if(i < mask.length)
 	{
  		if (mask.charAt(i) == '9') 
  		{
       		return (key > 47 && key < 58);
      	} 
      	else 
      	{
       		if (mask.charAt(i) == '?') 
       		{  
       			return true;  
       		}
          	
          	for (c = i; c < mask.length; c++) 
          	{
         		if (mask.charAt(c) != '9' && mask.charAt(c) != '?')
         			campo.value = campo.value + mask.charAt(c);
      			else if (mask.charAt(c) == '?')
      			{
               		return true;
       			} 
       			else 
       			{
         			return (key > 47 && key < 58);
          		}
       		}
    	}
	} 
  	else 
  		return false;
}

function formata_blur(campo, mask) 
{
    var valortemp = campo.value;
    campo.value='';
    if(valortemp.length > 0 && valortemp.length <= mask.length)
    {  	
       	var posicaomascara = mask.length-1;
    	for(i = valortemp.length-1; i >= 0  ; i--)
    	{
	    	var atualizado = false;
	    	var caracteratual = valortemp.charAt(i);
	    	
	    	while((mask.charAt(posicaomascara) != '9' && mask.charAt(posicaomascara) != '?')
	    		  && (posicaomascara >= 0)) 
	      	{
	      		campo.value += mask.charAt(posicaomascara);  
	      		posicaomascara--;
	      	}
	  		 
	  		while((mask.charAt(posicaomascara) == '9')
	    		  && (posicaomascara >= 0 && atualizado==false)) 
	      	{
	      		if(caracteratual >= '0' && caracteratual <= '9')
	      		{
		      		campo.value += caracteratual;
		      		atualizado=true;
		      	}  
	      		posicaomascara--;
	      	}
	      	
	    	while((mask.charAt(posicaomascara) == '?')
	    		  &&(posicaomascara >= 0 && atualizado==false)) 
	      	{
	      		campo.value += caracteratual;  
	      		posicaomascara--;
	      		atualizado=true;
	      	}    	
		}
	}
	else
	{
	 	campo.value=valortemp;
	}
}

function consolidarImagem(nomeImagem) {
	$(nomeImagem).style.display = 'none'
}

function normalizarFloat(valor) {
	return valor.replace(/,/g,".");
}

function parseFloatUtil(valor) {
	return parseFloat(normalizarFloat(valor));
}

function selecionarTudo(valor, holdername) {
	var holder;
	if (holdername != null) {
		holder = $(holdername);
	} else {
		holder = document;
	}
	elements = holder.getElementsByTagName('INPUT');
	for (var i=0; i<elements.length;i++) {
		if (elements[i].type == "checkbox" && !elements[i].disabled) {
			elements[i].checked = valor;
		}
	}
}

function fecharPopUp() {
	if(parent.win){parent.win.close();parent.win=null;} else { window.close();}
}

function maxLength(field, maxlimit)
{
	if (field.value.length > maxlimit) 
	  field.value = field.value.substring(0, maxlimit);
}
 
function confirma_exclusao(){
	  return (confirm ("Confirma a exclusão do registro?"));
} 

function VerificaData(cData) {
    var data = cData; 
    var tam = data.length;
    if (tam != 10) {
    	return false;
    }
    var dia = data.substr(0,2)
    var mes = data.substr (3,2)
    var ano = data.substr (6,4)     
    if (ano < 1980) {
    	return false;
    }

    switch (mes) {
		case '01':
		     if  (dia <= 31) 
		    	 return (true);
		     break;
		case '02':
		     if  (dia <= 29) 
		    	 return (true);
		     break;
		case '03':
		     if  (dia <= 31) 
		    	 return (true);
		     break;
		case '04':
		     if  (dia <= 30) 
		    	 return (true);
		     break;
		case '05':
		     if  (dia <= 31) 
		    	 return (true);
		     break;
		case '06':
		     if  (dia <= 30) 
		    	 return (true);
		     break;
		case '07':
		     if  (dia <= 31) 
		    	 return (true);
		     break;
		case '08':
		     if  (dia <= 31) 
		    	 return (true);
		     break;
		case '09':
		     if  (dia <= 30) 
		    	 return (true);
		     break;
		case '10':
		     if  (dia <= 31) 
		    	 return (true);
		     break;
		case '11':
		     if  (dia <= 30) 
		    	 return (true);
		     break;
		case '12':
		     if  (dia <= 31) 
		    	 return (true);
		     break;
    }
    {
    	return false;
    }
    return true; 
}

function validaCnpj(p_cnpj){
	//Limpa pontos e Traços da string
	var cnpj = p_cnpj.replace(/\./g, "");
	cnpj = cnpj.replace(/\-/g, "");
	cnpj = cnpj.replace(/\_/g, "");
	cnpj = cnpj.replace(/\//g, "");
	
	var numeros, digitos, soma, i, resultado, pos, tamanho, digitos_iguais;
	digitos_iguais = 1;
	
	if (cnpj.length < 14 && cnpj.length < 15){
		 return false;
	}
	     
	for (i = 0; i < cnpj.length - 1; i++){
		if (cnpj.charAt(i) != cnpj.charAt(i + 1)){
	        digitos_iguais = 0;
	        break;
	    }
	}
	
	if (!digitos_iguais){
		tamanho = cnpj.length - 2;
		numeros = cnpj.substring(0,tamanho);
		digitos = cnpj.substring(tamanho);
		soma = 0;
		pos = tamanho - 7;
		for (i = tamanho; i >= 1; i--){
			soma += numeros.charAt(tamanho - i) * pos--;
			if (pos < 2){
				pos = 9;
			}
        }
		resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
		if (resultado != digitos.charAt(0)){
			return false;
		}
		tamanho = tamanho + 1;
		numeros = cnpj.substring(0,tamanho);
		soma = 0;
		pos = tamanho - 7;
		for (i = tamanho; i >= 1; i--){
			soma += numeros.charAt(tamanho - i) * pos--;
			if (pos < 2){
				pos = 9;
			}
		}
		resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
		if (resultado != digitos.charAt(1)){
			return false;
		}
		return true;
	}else{
	      return false;
	}
} 

function validarCPF(par_cpf){
   var cpf = par_cpf.value;
   var filtro = /^\d{3}.\d{3}.\d{3}-\d{2}$/i;
   /*if(!filtro.test(cpf)){
     window.alert("CPF inválido. Tente novamente.");
	 return false;
   }*/
   
   cpf = remove(cpf, ".");
   cpf = remove(cpf, "-");
    
   if(cpf.length != 11 || cpf == "00000000000" || cpf == "11111111111" ||
	  cpf == "22222222222" || cpf == "33333333333" || cpf == "44444444444" ||
	  cpf == "55555555555" || cpf == "66666666666" || cpf == "77777777777" ||
	  cpf == "88888888888" || cpf == "99999999999"){
	  window.alert("CPF inválido. Tente novamente.");
	  return false;
   }

   soma = 0;
   for(i = 0; i < 9; i++)
   	 soma += parseInt(cpf.charAt(i)) * (10 - i);
   resto = 11 - (soma % 11);
   if(resto == 10 || resto == 11)
	 resto = 0;
   if(resto != parseInt(cpf.charAt(9))){
	 window.alert("CPF inválido. Tente novamente.");
	 return false;
   }
   soma = 0;
   for(i = 0; i < 10; i ++)
	 soma += parseInt(cpf.charAt(i)) * (11 - i);
   resto = 11 - (soma % 11);
   if(resto == 10 || resto == 11)
	 resto = 0;
   if(resto != parseInt(cpf.charAt(10))){
     window.alert("CPF inválido. Tente novamente.");
	 return false;
   }
   return true;
 }
 
function remove(str, sub) {
   i = str.indexOf(sub);
   r = "";
   if (i == -1) return str;
   r += str.substring(0,i) + remove(str.substring(i + sub.length), sub);
   return r;
}

function ValidaEmail(p_email)
{
  var email = p_email;
  if ((email.length != 0) && ((email.indexOf("@") < 1) || (email.indexOf('.') < 7)))
  {
	  return false;
  }
  return true;
}
